package cn.aixuxi.notebank.service;

import cn.aixuxi.notebank.dto.NoteInputDTO;
import cn.aixuxi.notebank.dto.NoteOutputDTO;
import cn.aixuxi.notebank.entity.NoteEntity;
import cn.aixuxi.notebank.entity.UserEntity;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface NoteService extends IService<NoteEntity> {
    /**
     * 功能描述: 添加笔记
     *
     * @param noteInputDTO 笔记内容
     * @return : void
     * @author : ruozhuliufeng
     * @date : 2020/10/25 0:22
     */
    void save(NoteInputDTO noteInputDTO);

    /**
     * 功能描述: 查询笔记列表
     *
     * @return : java.util.List<cn.aixuxi.notebank.dto.NoteOutputDTO>
     * @author : ruozhuliufeng
     * @date : 2020/10/25 0:37
     */
    List<NoteOutputDTO> noteList();

    /**
     * 功能描述: 根据ID获取详情
     * @param id 笔记id
     * @return : cn.aixuxi.notebank.dto.NoteOutputDTO
     * @author : ruozhuliufeng
     * @date : 2020/10/25 1:03
     */
    NoteOutputDTO findById(Integer id);

    /**
     * 功能描述: 修改笔记内容
     * @param noteInputDTO 笔记内容
     * @param user 保存修改记录
     * @return : void
     * @author : ruozhuliufeng
     * @date : 2020/10/25 11:11
     */
    void updateNote(NoteInputDTO noteInputDTO);

    /**
     * 功能描述: 获取前五名查看量最高的笔记信息
     * @return : 笔记信息
     * @author : ruozhuliufeng
     * @date : 2020/10/29 22:36
     */
    List<NoteOutputDTO> rank();

    /**
     * 功能描述: 获取最新笔记
     * @return : cn.aixuxi.notebank.dto.NoteOutputDTO
     * @author : ruozhuliufeng
     * @date : 2020/10/29 23:17
     */
    NoteOutputDTO newNote();
}
